package com.apiserver.kernel.utils;

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 *  
 * 描述：Object to Map
 * @author： feizhou
 * @date ：2018/12/21 15:39
 * @return Map
 */
public class MapUtil {
    /**
     * 获取利用反射获取类里面的值和名称,并转化为Map
     *
     * @param obj
     * @return
     * @throws IllegalAccessException
     */
    public static Map<String, Object> objectToMap(Object obj) throws IllegalAccessException {
        Map<String, Object> map = new HashMap<String, Object>();
        Class<?> clazz = obj.getClass();
        for (Field field : clazz.getDeclaredFields()) {
            field.setAccessible(true);
            String fieldName = field.getName();
            Object value = field.get(obj);
            map.put(fieldName, value);
        }
        return map;
    }

    /**
     *
     * 描述：移除Map的 null key和null value
     * 使用 Iterator 本身的方法 remove() 来删除对象， Iterator.remove() 方法会在删除当前迭代对象的同时维护索引的一致性。
     * @author： feizhou
     * @date ：2018/12/21 16:09
     * @param ：[map]
     * @return void
     */
    public static void removeNullEntry(Map map){
        if(map!=null){
        Set set = map.keySet();
        for (Iterator iterator = set.iterator(); iterator.hasNext();) {
            Object obj = (Object) iterator.next();
            if(StringUtil.isEmpty(obj)){
                iterator.remove();
                continue;
            }
            Object value =(Object)map.get(obj);
            if (StringUtil.isEmpty(value)){
                iterator.remove();
                continue;
            }
        }}
    }
    /**
     *
     * @Description (json字符串转Map
     *{"applicationNO":"D00021803130003","page":"1","rows":"2"})
     * @author feizhou
     * @Date 2018年6月19日上午10:53:56
     * @version 1.0.0
     * @param
     * @return
     */
    @SuppressWarnings("unchecked")
    public static Map<String,Object> jsonStrToMap(String json) throws Exception {
            return    JSONUtils.jsonToMap(json);

    }
}
